package lumis.portal.url;

import lumis.portal.serviceinterface.IServiceInterface;
import lumis.portal.serviceinterface.IServiceInterfaceUrl;
import lumis.portal.stability.StableMinor;

/**
 * Interface implemented by classes able to generate Portal URL objects.
 *
 * @version $Revision: 13082 $ $Date: 2011-05-27 16:03:12 -0300 (Fri, 27 May 2011) $
 * @since 5.5.0
 */
@StableMinor(version = "6.0", sinceVersion = "5.0")
public interface IURLFactory
{
	/**
	 * Creates an action URL.
	 * @return the URL object.
	 * @see IServiceInterface#processAction
	 * @since 5.5.0
	 */
	public IServiceInterfaceUrl createActionURL();

	/**
	 * Creates a render URL.
	 * @return the URL object.
	 * @see IServiceInterface#render
	 * @since 5.5.0
	 */
	public IServiceInterfaceUrl createRenderURL();

	/**
	 * Creates a URL for accessing a portal page.
	 * <p>
	 * The returned URL object will not have its destination specified, 
	 * so it will refer to the portal home by default. 
	 * Its methods may be used to specify the URL destination.
	 * @return the URL object.
	 * @see IServiceInterfaceUrl#setPageId(String)
	 * @see IServiceInterfaceUrl#setChannelId(String)
	 * @since 5.5.0
	 */
	public IServiceInterfaceUrl createPortalURL();
}
